﻿using Data_Access_Layer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Business_Layer
{
	public class OrderController
	{
		//Dùng để lấy lỗi
		public string _err="";
		
		//Lấy danh sách các hóa đơn
		public List<Order> GetAll(bool _type)
		{
			if (_type)//Hóa đơn bán
				return Order.Objects.Where(x => x.Type && x.Deleted==false).ToList();
			else//Hóa đơn mua
			{
                return Order.Objects.Where(x => !x.Type && x.Deleted == false).ToList();
			}
		}
        
		/// <summary>
        /// Thêm hóa hoặc cập nhật hóa đơn
		/// </summary>
		/// <param name="_order"></param>
		/// <returns>bool</returns>
		public bool InsertOrUpdate(Order _order)
		{
			try
			{
				_err = "";
				if (_order.Id > 0)
				{
					Order.Objects.Update(_order);
					return true;
				}
				else
				{
					Order.Objects.Insert(_order);
					return true;
				}
			}
			catch (Exception ex)
			{
				_err = ex.Message;
				return false;
			}
		}
        /// <summary>
        /// Xóa hóa đơn
        /// </summary>
        /// <param name="_order"></param>
        /// <returns></returns>
        public bool Delete(Order _order)
        {
            try
            {
                _err = "";
                Order.Objects.Update(_order);
                return true;
            }
            catch (Exception ex)
            {
                _err = ex.Message;
                return false;
            }
        }

		//Tìm kiếm hóa đơn theo mã
		public List<Order> FindById(int id,bool type)
		{

			if (type)
                return Order.Objects.Where(x => x.Id.ToString().IndexOf(id.ToString()) != -1 && x.Type == true && x.Deleted == false).ToList();
			else
			{
                return Order.Objects.Where(x => x.Id.ToString().IndexOf(id.ToString()) != -1 && x.Type == false && x.Deleted == false).ToList();
			}
		}
		//Tìm  hóa đơn theo bàn
		public List<Order> FindByDesk(int  _desk)
		{
            return Order.Objects.Where(x => x.DeskId.ToString().IndexOf(_desk.ToString()) != -1 && x.Type == true && x.Deleted == false).ToList();
		
		}
		//tìm  hóa đơn theo ngày lập
		public List<Order> FindByOrderDate(DateTime date,bool type)
		{
			if(type)
                return Order.Objects.Where(x => x.OrderDate.Day == date.Day && x.OrderDate.Month == date.Month && x.OrderDate.Year == date.Year && x.Type == true && x.Deleted == false).ToList();
			else
			{
                return Order.Objects.Where(x => x.OrderDate.Day == date.Day && x.OrderDate.Month == date.Month && x.OrderDate.Year == date.Year && x.Type == false && x.Deleted == false).ToList();
			}
		}
		//tìm hóa đơn theo người lập
		public List<Order> FindbyEmployee(int empid,bool type)
		{
			if(type)
                return Order.Objects.Where(x => x.EmpId.ToString().IndexOf(empid.ToString()) != -1 && x.Type == true && x.Deleted == false).ToList();
			else
			{
                return Order.Objects.Where(x => x.EmpId.ToString().IndexOf(empid.ToString()) != -1 && x.Type == false && x.Deleted == false).ToList();
			}
		}
		//tìm  hóa đơn theo nhà cung ứng
		public List<Order> FindbySupplier(int supid)
		{

            return Order.Objects.Where(x => x.SupId.ToString().IndexOf(supid.ToString()) != -1 && x.Type == true && x.Deleted == false).ToList();
			
		}
		
	}
}
